﻿
namespace SharpTag.ID3
{
    /// <summary>
    /// Represents an abstract factory used to generate different Tag Headers ID3Tags.
    /// </summary>
    public abstract class AbstractTagHeaderFactory
    {
        /// <summary>
        /// Create a new empty <see cref="ITagHeader"/> object.
        /// </summary>
        /// <returns>A new empty <see cref="ITagHeader"/> object.</returns>
        public abstract ITagHeader CreateTagHeader();

        /// <summary>
        /// Creates a new <see cref="ITagHeader"/> object extracted from the raw tag byte array.
        /// </summary>
        /// <param name="tagBytes">The raw tag byte array.</param>
        /// <returns>A new <see cref="ITagHeader"/> object.</returns>
        public abstract ITagHeader GetTagHeader(byte[] tagBytes);
    }
}
